package modelo;

import java.util.Collection;
import java.util.ArrayList;
import java.lang.Character;
import modelo.excepciones.CaracteristicaInexistente;

public class GeneradorDeCaracteristicasDeLadron{

	private String directorio;

	public GeneradorDeCaracteristicasDeLadron(){
		String nombre_total_clase = ((new Femenino()).getClass()).getName();
		directorio = nombre_total_clase.substring(0, ((nombre_total_clase.length()) - ("Femenino".length())));
	}

	public CaracteristicaDeLadron obtenerCaracteristica(String nombre) throws CaracteristicaInexistente{
		String nombre2 = this.devolverCadenaSinEspaciosConMayusculas(nombre);
		if (nombre.toLowerCase() == "mountainclimbing"){
			nombre2 = "MountainClimbing";
		}
		CaracteristicaDeLadron caracteristica = null;
		try{
			caracteristica = (CaracteristicaDeLadron) Class.forName(directorio+nombre2).newInstance();
		} catch (ClassNotFoundException e){
			throw new CaracteristicaInexistente();
		} catch (Exception e){}
		return caracteristica;
	}

	private String devolverCadenaSinEspaciosConMayusculas(String cadena){
		String cadenaSinEspacios = "";
		boolean ant_espacio = true;
		for (int x=0; x < cadena.length(); x++) {
			char caracter = cadena.charAt(x); 
 			if (caracter != ' '){
				if (ant_espacio){
	    				cadenaSinEspacios += Character.toUpperCase(caracter);
				} else {

	    				cadenaSinEspacios += Character.toLowerCase(caracter);
				}
				ant_espacio = false;
			} else {
				ant_espacio = true;
			}
		}
		return cadenaSinEspacios;
	}

}